Two-dimensional bar codes, also referred to as “two-dimensional codes” or “2-D codes,” are patterns with data encoded therein. The encoded data may be text, a URI/URL or raw data. One form of a 2-D code is a matrix barcode (data matrix code) which consists of black and white cells or modules arranged in either a square or rectangular pattern. Another form of a 2-D code uses clusters of triangles, such as the Microsoft® Tag and the Microsoft High Capacity Color Barcode (HCCB). One commonly used 2-D matrix-type code is a QR code which consists of black modules arranged in a square pattern on a white background. QR is an abbreviation for “Quick Response.” The QR code is described in U.S. Pat. No. 5,726,435 (Hara et al.).
One common use of a 2-D code is for “hardlinking” or “object hyperlinking” which refers to the act of linking from physical world objects. The 2-D code is used to encode a URI/URL, which is then printed on a document, such as a page in a newspaper or magazine, brochure, billboard, sign, or business card. Software downloaded into an electronic device, such as smartphone, is then used in conjunction with a camera (e.g., camera phone) to read/scan the 2-D code, decode the URI/URL in the 2-D code, and then navigate to the location/site (e.g., web page) of the URI/URL and display the contents on a browser associated with the electronic device. In this manner, the 2-D code can act as a pointer to a robust store of information that the document owner wishes to share. The location/site of the URI/URL (i.e., the location that you ultimately want to navigate to, such as to learn more about a product displayed in printed material) is one example of what is referred to herein as the “intent.” The “intent” may also be any other commands that the software of the electronic device can execute. The final step in the process is for the intent to be selected, typically by user selection, such as clicking on the intent. Other examples of an intent as used herein include, but are not limited to, an email address, a telephone number, contact information (e.g., vCard), SMS, MMS, geographic information (e.g., geo URI), a Wifi network configuration, or a storage location from which software packages may be retrieved and installed on a device (software repository, such as an app store).
As 2-D codes become more popular, security issues are likely to arise, particularly when 2-D codes are used in public locations, such as on billboards and signs. For example, if a company wishes to promote its product or brand in a sign or billboard campaign by encouraging a user/viewer to scan the 2-D code, a hacker may print a 2-D code of a similar size and attach it over the originally printed 2-D code, thereby directing the unsuspecting person who scans the 2-D code to a different web page where unexpected and unwanted content is displayed, or where a computer virus can potentially infect the user's device. Security breaches could also occur in the original printing of the 2-D code, wherein an incorrect 2-D code is deliberately printed by someone who has hacked into the printing software. In this instance, large numbers of documents could be inadvertently distributed with a different 2-D code than the owner of the printed documents intended. Likewise, if a 2-D code is electronically displayed, such as on web page or a public display, a hacker could electronically replace the correct 2-D code with an unintended or malicious 2-D code.
Accordingly, there is a need to address these types of potential security issues so that a user has some level of assurance that the intent obtained from the 2-D code can be trusted.